import {
  Controller,
  // Get,
  // Post,
  // Body,
  // Put,
  // Param,
  // Delete,
} from '@nestjs/common';
import { ApiTags, ApiOperation /*, ApiProperty */ } from '@nestjs/swagger';
import { Post as PostSchema } from './post.model';
// import { IsNotEmpty } from 'class-validator';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType } from '@typegoose/typegoose/lib/types';
import { Crud } from 'nestjs-mongoose-crud';

// class CreatePostDto {
//   @ApiProperty({ description: '帖子标题', example: '帖子标题1' })
//   @IsNotEmpty({ message: '请填写标题' })
//   title: string;
//   @ApiProperty({ description: '帖子内容', example: '帖子内容1' })
//   content: string;
// }

@Crud({
  model: PostSchema,
  routes: {
    find: {
      decorators: [ApiOperation({ summary: '帖子列表' })],
    },
    findOne: {
      decorators: [ApiOperation({ summary: '帖子详情' })],
    },
    create: {
      decorators: [ApiOperation({ summary: '创建帖子' })],
    },
    update: {
      decorators: [ApiOperation({ summary: '更新帖子' })],
    },
    delete: {
      decorators: [ApiOperation({ summary: '删除帖子' })],
    },
  },
})
@Controller('posts')
@ApiTags('帖子')
export class PostsController {
  constructor(
    @InjectModel(PostSchema) private readonly model: ModelType<PostSchema>,
  ) {}

  // @Get()
  // @ApiOperation({ summary: '帖子列表' })
  // async index(): Promise<any> {
  //   return await this.postModel.find();
  // }

  // @Post()
  // @ApiOperation({ summary: '创建帖子' })
  // async create(@Body() createPostDto: CreatePostDto): Promise<any> {
  //   await this.postModel.create(createPostDto);
  //   return {
  //     success: true,
  //   };
  // }

  // @Get(':id')
  // @ApiOperation({ summary: '帖子详情' })
  // async detail(@Param('id') id: string): Promise<any> {
  //   return await this.postModel.findById(id);
  // }

  // @Put(':id')
  // @ApiOperation({ summary: '编辑帖子' })
  // async update(@Param('id') id: string, @Body() updatePostDto: CreatePostDto): Promise<any> {
  //   await this.postModel.findByIdAndUpdate(id, updatePostDto);
  //   return {
  //     success: true,
  //   };
  // }

  // @Delete(':id')
  // @ApiOperation({ summary: '删除帖子' })
  // async remove(@Param('id') id: string): Promise<any> {
  //   await this.postModel.findByIdAndDelete(id);
  //   return {
  //     success: true,
  //   };
  // }
}
